﻿// //  ********************************************************************************
// //  Copyright (C) 2016 Sebastian Kenter. All rights reserved.
// // 
// //  Name    : PhotonServerProject | PhotonServerFramework | IServerPeer.cs
// //  Created : 2016 - 03 - 21 10:03
// //  Modified: 2016 - 04 - 18 09:38
// //  ********************************************************************************

using System;
using ExitGames.Logging;
using PhotonServerFramework.Interfaces.Configuration;

namespace PhotonServerFramework.Interfaces.Server
{
    /// <summary>
    ///     Interface for a server peer (real server peer and sub server peer)
    /// </summary>
    public interface IServerPeer
    {
        /// <summary>
        ///     Logger instance
        /// </summary>
        ILogger Logger { get; }

        /// <summary>
        ///     Unique server peer ID
        /// </summary>
        Guid ServerPeerId { get; }

        /// <summary>
        ///     Server peer data object
        /// </summary>
        IPeerData ServerPeerData { get; }

        /// <summary>
        ///     Connects the server peer
        /// </summary>
        void ConnectPeer();

        /// <summary>
        ///     Disconnects the server peer
        /// </summary>
        /// ToDo: Should be changed to GUID later
        /// <param name="server">name of the requesting server</param>
        void DisconnectPeer(string server);
    }
}
